package com.azi.baseconhecimento.web;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import com.azi.baseconhecimento.entity.Categoria;
import com.azi.baseconhecimento.entity.Comentario;
import com.azi.baseconhecimento.entity.Dica;
import com.azi.baseconhecimento.service.CategoriaService;
import com.azi.baseconhecimento.service.DicaService;

@Controller
public class DicaForm {

	@Autowired
	DicaService dicaService;

	@Autowired
	CategoriaService categoriaService;

	@RequestMapping(value = "/dica/form.htm")
	public ModelAndView init(ModelMap map) {
		List<Categoria> categorias = categoriaService.listarCategorias();

		map.addAttribute("categorias", categorias);
		return new ModelAndView("/dica/dicaForm.jsp");
	}

	@RequestMapping(value = "/dica/salvar.htm", method = RequestMethod.POST)
	public ModelAndView salvarDica(@RequestParam("colaborador")
	String colaborador, @RequestParam("titulo")
	String titulo, @RequestParam("descricao")
	String descricao, @RequestParam(value="categoriasSelecionadas", required = false)
	String[] categoriasSelecionadas, @RequestParam("categoriaNova")
	String categoriaNova) {

		Dica dica = new Dica(titulo, descricao, new Date(), colaborador);
		dica.setCategorias(new ArrayList<Categoria>());

		if (categoriasSelecionadas != null && categoriasSelecionadas.length > 0) {
			for (String nome : categoriasSelecionadas) {
				Categoria categoria = new Categoria();
				categoria.setNome(nome);
				dica.getCategorias().add(categoria);
			}
		}

		if (categoriaNova != null && !categoriaNova.trim().equals("")) {
			Categoria categoria = new Categoria();
			categoria.setNome(categoriaNova);
			dica.getCategorias().add(categoria);
		}

		dicaService.salvarDica(dica);

		return new ModelAndView("/dica/list.htm");
	}

}
